<?php
require_once WXPAY . "lib/WxPay.Api.php";
require_once WXPAY . 'lib/WxPay.Notify.php';
require_once WXPAY . 'example/log.php';
use app\common\service\WXUtils;

//初始化日志
// $logHandler= new CLogFileHandler(WXPAY."logs/".date('Y-m-d').'.log');
// $log = Log::Init($logHandler, 15);
class PayNotifyCallBack extends WxPayNotify {
	var $uinfo;
	//查询订单
	public function Queryorder($data) {
		$input = new WxPayOrderQuery();
		$input->SetTransaction_id($data['transaction_id']);
		$result = WxPayApi::orderQuery($input);
		$nowtime = time();
		// Log::DEBUG("query:" . json_encode($result));
		if (array_key_exists("return_code", $result) && array_key_exists("result_code", $result) && $result["return_code"] == "SUCCESS" && $result["result_code"] == "SUCCESS") {
			$ordersn = $result['out_trade_no'];
			$total_fee = $result['total_fee'] / 100;
			//
			$wxutils = new WXUtils();
			$wxutils->sendWxPayTemplateMsg($data);
			return model("Order")->pay_success($ordersn, $total_fee, 2);
			// return D("Order")->set_pay_success($ordersn,$total_fee,1);
		}
		return false;
	}

	//重写回调处理函数
	public function NotifyProcess($data, &$msg) {
		// Log::DEBUG("call back:" . json_encode($data));
		$notfiyOutput = array();

		if (!array_key_exists("transaction_id", $data)) {
			$msg = "输入参数不正确";
			return false;
		}
		//查询订单，判断订单真实性
		if (!$this->Queryorder($data)) {
			$msg = "订单查询失败";
			return false;
		}

		return true;
	}
}